package cc.rengu.oltp.service.realize;

import cc.rengu.oltp.service.common.entity.SmsInfo;

/**
 * 短信验证码生成及验证服务
 * Created by 王成 on 2020/2/7
 */
public interface SmsService {
    /**
     * 生成短信验证码
     *
     * @param instId   多法人标识
     * @param mobileNo 申请手机号
     * @param smsType  短信验证码类型
     * @return 短信验证码信息
     * @throws Exception 异常
     */
    SmsInfo generateSmsCode(String instId, String mobileNo, String smsType) throws Exception;

    /**
     * 生成短信验证码，对应的key由外部生成
     *
     * @param instId         多法人标识
     * @param mobileNo       申请手机号
     * @param smsType        短信验证码类型
     * @param transChannelId 交易渠道 除IGAS外其他值，各自渠道保证唯一
     * @param verifySeqNum   短信验证码对应key
     * @return 短信验证码信息
     * @throws Exception 异常
     */
    SmsInfo generateSmsCode(String instId, String mobileNo, String smsType, String transChannelId, String verifySeqNum) throws Exception;

    /**
     * 校验短信验证码
     *
     * @param instId        多法人标识
     * @param smsType       短信验证码类型
     * @param smsCode       短信验证码
     * @param verifySeqNum  短信验证码验证流水号
     * @param verifyPhoneNo 验证手机号
     * @return true-验证通过，flase-验证失败
     * @throws Exception 异常
     */
    boolean verifySmsCode(String instId, String smsType, String smsCode, String verifySeqNum, String... verifyPhoneNo) throws Exception;


    /**
     * 校验短信验证码,带渠道
     *
     * @param instId         多法人标识
     * @param smsType        短信验证码类型
     * @param smsCode        短信验证码
     * @param transChannelId 渠道
     * @param verifySeqNum   短信验证码验证流水号
     * @param verifyPhoneNo  验证手机号
     * @return true-验证通过，flase-验证失败
     * @throws Exception 异常
     */
    boolean verifySmsCodeWithChannel(String instId, String smsType, String smsCode, String transChannelId, String verifySeqNum, String... verifyPhoneNo) throws Exception;
}
